package com.xbongbong.paas.log.enums;


import lombok.Getter;

/**
 * mongodb字段过滤操作枚举，
 * 其中alias类对应{@link org.springframework.data.mongodb.core.query.Criteria}的方法
 * @author kaka
 * @date 2019/1/21 13:53
 * @since v1.0
 * @version v1.0
 */
@Getter
public enum FilterOperatorEnum {

    /**
     * 等于
     */
    EQUAL(1 , "=", "is"),

    /**
     * 不等于
     */
    NOT_EQUAL(2 , "!=", "ne"),

    /**
     * 大于
     */
    GREAT_THAN(3 , ">", "gt"),

    /**
     * 小于
     */
    LESS_THAN(4 , "<", "lt"),

    /**
     * 大于等于
     */
    GREAT_THAN_OR_EQ(5 , ">=", "gte"),

    /**
     * 小于等于
     */
    LESS_THAN_OR_EQ(6 , "<=", "lte"),

    /**
     * IN操作
     */
    IN(7, "in", "in"),

    /**
     * NOT IN操作
     */
    NOT_IN(8, "nin", "nin"),

    /**
     * 存在
     */
    EXISTS(9, "exists", "exists"),

    /**
     * 包含，逻辑类似mysql中的LIKE '%x%',Mongodb查询中用正则实现
     */
    CONTAINS(10, "contains", "regex"),
    ;

    /**
     * 枚举值
     */
    private final int		code;

    /**
     * 操作符
     */
    private final String operator;

    /**
     * 对应的Criteria方法
     */
    private final String alias;

    /**
     * * 构造一个<code>FilterOperatorEnum</code>枚举对象
     *
     * @param code 枚举类 Code
     * @param operator 操作符
     * @param alias 对应的Criteria方法
     */
    FilterOperatorEnum(int code, String operator, String alias) {
        this.code = code;
        this.alias = alias;
        this.operator = operator;
    }
}
